package negocios;

import java.util.Date;

/**
 * Interface para manipular uma mensagem de correio eletronico. Uma mensagem
 * contem um remetente, um assunto, uma data de envio e algum conteudo.
 * 
 * @author Jonathan Brilhante
 * @author Jose Rafael
 * @author Nata Venancio
 * @author Renato Almeida
 * 
 * @version 1.0
 */

public interface Mensagem {
	/**
	 * Retorna o remetente da mensagem
	 * 
	 * @return o remetente da mensagem
	 */
	public String getRemetente();

	/**
	 * Retorna o destinatario da mensagem
	 * 
	 * @return o destinatario da mensagem
	 */
	public String getDestinatario();

	/**
	 * Retorna o assunto da mensagem
	 * 
	 * @return o assunto da mensagem
	 */
	public String getAssunto();

	/**
	 * Retorna a data de envio da mensagem
	 * 
	 * @return a data de envio da mensagem
	 */
	public Date getDataEnvio();

	/**
	 * Retorna se a mensagem foi lida ou nao
	 * 
	 * @return true se a mensagem foi lida, false caso contrario
	 */
	public boolean isLida();

	/**
	 * Retorna se a mensagem foi excluida ou nao
	 * 
	 * @return true se a mensagem foi excluida, false caso contrario
	 */
	public boolean isExcluida();

	/**
	 * Marca a mensagem como excluida
	 */
	public void excluir();

	/**
	 * Marca a mensagem como lida
	 */
	public void lida();

	/**
	 * Marca a mensagem como nao excluida
	 */
	public void marcarNaoExcluida();

	/**
	 * Marca a mensagem como nao lida
	 */
	public void marcarNaoLida();

	/**
	 * Retorna uma representacao da mensagem como String
	 * 
	 * @return a representacao da mensagem como String.
	 */
	public String toString();

	/**
	 * Retorna o conteudo da mensagem.
	 * 
	 * @return O conteudo da mensagem
	 */
	public String getConteudo();
}